package com.powernode.utils;

import java.util.concurrent.*;

/**
 * 内容:
 * 作者: cy
 */
public class ManagerThreadPool {

    /**
     * 线程池 七大参数
     * 为什么不能使用Executors创建线程池
     * // 取到当前操作系统的环境变量的最大逻辑处理器数
     * IO密集型(只要是涉及到文件io操作 就写文件的个数)
     * CPU密集型(其他操作)
     */
    public static ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(
            4, // 核心线程池  这个值不能比OS的最大逻辑处理器数大 不然会报错
            Runtime.getRuntime().availableProcessors(), // 最大核心数
            30, // 线程空间等待时间
            TimeUnit.SECONDS, // 单位
            new LinkedBlockingQueue<Runnable>(30), // 任务阻塞队列
            Executors.defaultThreadFactory(), // 线程创建工厂
            new ThreadPoolExecutor.AbortPolicy() // 拒绝策略  四种策略
    );

//    public static void main(String[] args) {
//        // 任务队列 没有边界
//        ExecutorService executorService = Executors.newFixedThreadPool(1);
//        // 任务队列 没有边界
//        ExecutorService executorService1 = Executors.newSingleThreadExecutor();
//        // 最大线程数 过大 cpu 根本不支持这么大的任务量
//        ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
//        // 最大线程数 过大 cpu 根本不支持这么大的任务量
//        ExecutorService executorService2 = Executors.newCachedThreadPool();
//
//    }


}
